<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js"></script>
</head>
<body>
    <!-- router-->
    <div id="app">
        <!-- 路由跳转的其它方式 -->
        <div>
            <input type="button" value="跳转到首页" @click="fn1()">
            <input type="button" value="跳转到新闻页面" @click="fn2()">

        </div>
      
       <!-- 路由需要一个出口 -->
       <!-- 然后才可以匹配到的组件渲染出来 -->
       <router-view></router-view>
    </div>

    

    <script>

        //创建路由
        const router = new VueRouter({
            // 路由的规则
            routes: [
                {
                    path:'/index/:id',
                    name:'index', //路由的名称，它是一个可选的属性，定义后就可以通过这个name来实现跳转
                    component:{ //路由所对应的组件
                        template:'<div>{{$route.params.id}}首页</div>' //组件的模板
                    }
                },
                {
                    path:'/news/:id/',
                    component:{
                        template:'<div>新闻:{{$route.params.id}}</div>'
                    }
                }
            ]
        })

       
        //4.创建Vue对象和挂载根实例
        //一定要通过router配置参数注入路由，从而让整个应用都有路由的功能
        let vm = new Vue({
            el:"#app",
            data:{},
            //将路由router添加到Vue中
            router,
            methods: {
                fn1(){
                    // 可以根据路由的名称实现一个跳转
                    this.$router.replace({
                        name:'index',
                        params:{id:Math.random()} //这个才是我们要传的参数
                    })
                },
                fn2(){
                    //我们可以直接跳转路由地址，参数可以直接写在路径中，大家可以使用ES6中的模板字符串 `模板字符串` 最常用的方式
                    this.$router.push(`/news/${Math.random()}`);
                }
            },
        })
    </script>
</body>
</html>